/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package webui;
import limfic.dominio.Jugador;
import java.util.Comparator;

/**
 * Clase que ordena una lista Jugador por la columna Nombre.
 * Para su funcionamiento implementa la Interfaz Comparator de Java
 * <p>
 * La clase tiene un parametro ordenAsc de tipo boolean que indica si se
 * ordena de forma ascendente o no. Es necesaria para el constructor.
 * </p>
 * <p>
 * El metodo compare() es el que compara y ordena la lista. Forma parte de la
 * interfaz Comparator.
 * </p>
 * @author OpenCodes
 */
public class CompararJugador implements Comparator {
    private boolean ordenAsc;
    private String campo;
    public boolean isOrden() {
        return ordenAsc;
    }

    public CompararJugador(String campo,boolean ordenAsc) {
        this.ordenAsc = ordenAsc;
        this.campo = campo;
    }

    

    public void setOrden(boolean orden) {
        this.ordenAsc = orden;
    }

   


    /**
     * @param Recibe dos objetos y los compara.
     * En este caso dos jugadores
     *
     *@return Devuelve el orden
     * Lee la variable ordenAsc y segun su valor ordena de forma ascendente o descendente.
     * Lee la variable campo que sera la columna a ordenar.
     */
    @Override
    public int compare(Object o1, Object o2) {
        
        Jugador j1 = (Jugador) o1;
        Jugador j2 = (Jugador) o2;

        if (campo.equals("Nombre")){
        
             if(ordenAsc){
                    return j1.getNombre().compareTo(j2.getNombre());
                }else{
                    return j2.getNombre().compareTo(j1.getNombre());
                }
        }else{
           
                if (campo.equals("Apellido")){
                    if(ordenAsc){
                        return j1.getApellido().compareTo(j2.getApellido());
                    }else{
                        return j2.getApellido().compareTo(j1.getApellido());
                    }
                }else{
                    if (campo.equals("Telefono")){
                        if(ordenAsc){
                            return j1.getTelefono().compareTo(j2.getTelefono());
                        }else{
                            return j2.getTelefono().compareTo(j1.getTelefono());
                        }
                    }else
                        {
                        if (campo.equals("Ciudad")){
                            if(ordenAsc){
                                return j1.getDireccionParticular().getCiudad().getNombre().compareTo(j2.getDireccionParticular().getCiudad().getNombre());
                            }else
                                {
                                return j2.getDireccionParticular().getCiudad().getNombre().compareTo(j1.getDireccionParticular().getCiudad().getNombre());
                                }
                        }else
                            {
                            //si no se ingreso ningun campo devuelve 0. NO hace nada
                            return 0;
                            }
                        }
                    
                    }
            }          
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

}